ΕΠΙΣΤΗΜΟΝΙΚΟΣ ΥΠΟΛΟΓΙΣΜΟΣ I (22 Σεπτεµβρίου) ΕΠΙΛΕΓΜΕΝΕΣ ΑΠΑΝΤΗΣΕΙΣ 1ο ΘΕΜΑ 1. Αφού ορίσετε ακριβώς τι σηµαίνει πίσω ευσταθής υπολογισµός, να εξηγήσετε αν ο υ- πολογισµός του εσωτερικού γινοµένου δύο διανυσµάτων α.κ.υ. µε τον συνηθισµένο τρόπο άθροισης (από αριστερά προς δεξιά) των γινοµένων των αντίστοιχων στοιχείων των διανυσµάτων είναι πίσω ευσταθής. ΒΙΒΛΙΟ 2. Σωστό ή Λάθος : Αν το µητρώο A R n n είναι τριδιαγώνιο και αντιστρέψιµο τότε πάντα ισχύει ότι η παραγοντοποίηση µε LU µε µερική οδήγηση (π.χ. το αποτέλεσµα της εντολής MATLAB [L,U] = lu(a)), υπολογίζει ένα κάτω διδιαγώνιο µητρώο L µε µονάδες στη διαγώνιο και ένα άνω διδιαγώνιο µητρώο τέτοια ώστε A = LU. ΛΑΘΟΣ : Γνωρίζουµε ότι αν ένα µητρώο είναι αντιστρέψιµο τότε υπάρχουν µητρώα L, U κάτω και άνω τριγωνικά αντίστοιχα και µε το L µε µονάδες στη διαγώνιο, και µητρώο µετάθεσης P τέτοια ώστε PA = LU. Αν το A είναι τριδιαγώνιο τότε η παραπάνω κλήση στη MATLAB έχει ως αποτέλεσµα ένα άνω τριγωνικό U και ένα µητρώο που ενσω- µατώνει την πληροφορία που περιέχουν το P και το L (δηλ. P L που η MATLAB καλεί «ψυχολογικά κάτω τριγωνικό» ). Ενα ακραίο (κλασικό) παράδειγµα είναι το A = [0, 1; 1, 0] για το οποίο η lu επιστρέφει U = I αλλά L = A που προφανώς δεν είναι κάτω τριγωνικό. 3. Αν ένα µητρώο έχει δείκτη κατάστασης 10 6 και η υπολογισµένη λύση σε σύστηµα α.κ.υ. IEEE διπλής ακρίβειας (µονάδα στρογγύλευσης u 10 16 ) του συστήµατος Ax = b µε QR είναι ˆx τότε x ˆx x 10 ρ. Ποιά είναι η τιµή του ρ και γιατί (σύντοµη εξήγηση). Χονδρικά το εµπρός σφάλµα ϕράσσεται από πάνω από το δείκτη κατάστασης του προβλήµατος επί το πίσω σφάλµα. Η QR είναι πίσω ευσταθής εποµένως το πίσω σφάλµα είναι O(u). Άρα µπορούµε να πούµε ότι το εµπρός σφάλµα ϕράσσεται εκ των άνω από 10 6 10 16 εποµένως ρ = 10. ΕΠΙΣΗΣ (για άλλες εκδοχές): Αντίστοιχα αποτελέσµατα έχουµε αν το µητρώο επιδέχεται την εφαρµογή αλγορίθµων που είναι πίσω ευσταθείς, π.χ. συστήµατα µε ΣΘΟ µητρώα µέσω της Cholesky. 4. Για ένα πολυώνυµο p µιας µεταβλητής x δίνονται οι συντελεστές της δυναµοµορφής του, a = [a(1); a(2);...; a(n + 1)], και όπως συνηθίζεται στη MATLAB, a(1) είναι ο συντελεστής της µεγαλύτερης δύναµης (n-οστής),... και a(n + 1) ο τελευταίος όρος (συντελεστής του x 0 = 1). ίνονται επίσης και m τιµές της µεταβλητής σε διάνυσµα X = [x(1);x(2);...; x(m)]. α) Να εκφράσετε τον υπολογισµό των τιµών {p(x(1)),..., p(x(m))} χρησιµοποιώντας µια πράξη πολλαπλασιασµού µητρώου µε διάνυσµα και τις απαραίτητες αρχικοποιήσεις για το µητρώο και το διάνυσµα. Καλύτερες απαντήσεις ϑα κρίνονται εκείνες που είναι άµεσα εκτελέσιµες σε MATLAB και που αποφεύγουν τη χρήση διπλά εµφωλευµένου ϐρόχου χρησιµοποιώντας τις κατάλληλες εκφράσεις. ϐ) Για ποιό λόγο, όταν το n είναι µεγάλο, αυτή η µέθοδος υπολογισµού είναι ανεπιθύµητη. (α) Ενας τρόπος είναι να εκφράσουµε τον υπολογισµό P = [X. 0, X,..., X. (n 1), X. n] a(n + 1 : 1 : 1) όπου P είναι η στήλη των p(x(1 : n)). π.χ. µε το ϐρόχο
V = []; for j = 0 : n V = [V, X. j]; P = V a(n + 1 : 1 : 1); (ϐ) Γιατί ϐασίζονται σε µητρώα Vandermonde που έχουν πολύ µεγάλο δείκτη κατάστασης ως προς τον πολλαπλασιασµό και άρα µπορεί να έχουµε µεγάλη µεγέθυνση των σφαλµάτων. Σωστό ή Λάθος : Αν το µητρώο A είναι συµµετρικό ϑετικά ορισµένο και τριδιαγώνιο τότε πάντα ισχύει ότι η παραγοντοποίηση µε LU µε µερική οδήγηση (π.χ. το αποτέλεσµα της εντολής MATLAB [L, U] = lu(a)), υπολογίζει ένα κάτω διδιαγώνιο µητρώο L µε µονάδες στη διαγώνιο και ένα άνω διδιαγώνιο µητρώο τέτοια ώστε A = LU. ΣΩΣΤΟ : Το µητρώο είναι ΣΘΟ εποµένως δεν χρειάζεται οδήγηση (αν γίνει µε- ϱική οδήγηση, οι οδηγοί είναι πάντα τα διαγώνια στοιχεία). Σε κάθε ϐήµα, j = 1,..., n 1, για την απαλοιφή του µοναδικού µη µηδενικού υποδιαγώνιου στοιχείου, χρησιµοποιούµε τη γραµµή µε µη µηδενικά στοιχεία στις ϑέσεις (j, j), (j, j + 1) εποµένως αυτό έχει ως αποτέλεσµα το µηδενισµό του στοιχείου στη ϑέση (j + 1, j) και την αλλαγή του στοιχείου στη ϑέση (j + 1, j + 1). Τα υπόλοιπα στοιχεία παραµένουν άθικτα. Εποµένως το U είναι διδιαγώνιο (περιέχει στη διαγώνιο τους οδηγούς και στην υπερδιαγώνιο την υπερδιαγώνιο του A ενώ όλα τα άλλα στοιχεία είναι 0.) Για το L προσέξτε ότι σε κάθε ϐήµα εφαρµόζουµε το στοιχειώδες µητρώο Gauss L j = I u j e 1 όπου u j είναι διάνυσµα µε µοναδικό µη µηδενικό στοιχείο στη ϑέση j + 1 λόγω της τριδιαγώνιας µορφής του A και e j το j διάνυσµα της τυπικής ϐάσης. Τότε το L ϑα είναι I +u 1 e 1 + u n 1e n 1 που είναι κάτω διδιαγώνιο. Σωστό ή Λάθος : Αν το µητρώο A R n n είναι κάτω τριγωνικό µε µονάδες στη διαγώνιο τότε πάντα ισχύει ότι η παραγοντοποίηση µε LU µε µερική οδήγηση (π.χ. το αποτέλεσµα της εντολής MATLAB [L,U] = lu(a)) επιστρέφει ως L το A και ως U το ταυτοτικό µητρώο της κατάλληλης διάστασης. Γενικά ΛΑΘΟΣ γιατί µε τη µερική οδήγηση, µπορεί να µην προκύψει κάτω τριγωνικό µητρώο. Για παράδειγµα A = [1, 0; 2, 1] στη MATLAB επιστρέφει L = [1/2, 1; 1, 0]. Θα ίσχυε αν η απόλυτη τιµή κάθε στοιχείου του A εκτός διαγωνίου ήταν µικρότερο του 1. Σωστό ή Λάθος : Αν το µητρώο A R n n είναι άνω τριγωνικό χωρίς µηδενικά στη διαγώνιο τότε πάντα ισχύει ότι η παραγοντοποίηση µε LU µε µερική οδήγηση (π.χ. το αποτέλεσµα της εντολής MATLAB [L, U] = lu(a)) υπολογίζει ως L = I (ταυτοτικό) και ως U = A. ΣΩΣΤΟ : Κατά τη διάρκεια της οδήγησης τα διαγώνια στοιχεία είναι πάντα µεγαλύτερα του 0 εποµένως οι οδηγοί είναι πάντα τα διαγώνια στοιχεία. Επιπλέον δεν χρειάζεται να γίνει απαλοιφή των κάτω τριγωνικών στοιχείων καθώς είναι όλα 0. Εποµένως η παραγοντοποίηση LU συνίσταται απλά στο A = I A. Υπενθυµίζουµε ότι στη MATLAB, οι µεταβλητές realmax, realmin, eps περιέχουν αντίστοιχα το µέγιστο και ελάχιστο κανονικοποιηµένο α.κ.υ. και το έψιλον της µηχανής. Τι επιστρέφουν οι παρακάτω εκφράσεις: i) 1+ eps/2 + eps 2/2 == 1. ii) realmin/0. iii) realmin/2 == 0. iv) realmax+realmax/2. v) 0/0. 2
2ο ΘΕΜΑ Εστω A R n n, και τα τυχαία (µη µηδενικά) διανύσµατα (στήλες) p, x i R n για i = 1,..., s και ο υπολογισµός y i = p + Ax i ; 1. Να ϐρείτε τον ελάχιστο αριθµό µεταφορών ανά πράξη α.κ.υ. για τον υπολογισµό ως έχει χρησιµοποιώντας το γνωστό (από το ϐιβλίο) απλό υπολογιστικό µοντέλο. 2. Να τροποποιήσετε τον παραπάνω κώδικα και να τον εκφράσετε σαν µια πράξη BLAS 3 και ό,τι επιπλέον αρχικοποιήσεις χρειάζονται. 1. Υπολογίζουµε τα Ω, Φ min για να ϐρούµε το Ϲητούµενο µ min = Φ min /Ω. Εχουµε Φ min = n 2 + n + 2ns και Ω = 2n 2 s άρα µ min = n2 + n + 2ns 2n 2 s Προσοχή: Τα p, A µεταφέρονται µόνο µια ϕορά! = 1 2s + 1 n + 1 2ns 2. Προφανώς, τα Y = [y 1,..., y s ], X = [x 1,..., x s ] είναι n s. Αν P = [p,..., p] είναι n s τότε Y = P + AX δηλαδή πράξη BLAS 3. Αρχικοποιούµε δηλαδή τα Y, X µε τις στήλες y i, x i ενώ το P = pe όπου e R s είναι περιέχει µόνο µονάδες. Εστω πυκνό αντιστρέψιµο A R n n, και τα τυχαία (µη µηδενικά) διανύσµατα (στήλες) x i, z i R n για i = 1,..., s και ο υπολογισµός z i = z i + A\x i ; όπου ο τελεστής «\» ενεργεί όπως και στη MATLAB. 1. Να εξηγήσετε γιατί το κυρίαρχο κόστος του είναι O(sn 3 ) και να υπολογίσετε τον ελάχιστον αριθµό µεταφορών στο γνωστό (από το ϐιβλίο) απλό υπολογιστικό µοντέλο. 2. Να τροποποιήσετε τον κώδικα έτσι ώστε τα ίδια αποτελέσµατα να υπολογίζονται µε κυρίαρχο κόστος O(n 3 ) (δηλ. χωρίς τον παράγοντα s). 1. Το \ συµβολίζει επίλυση συστήµατος στη MATLAB (ευρέως γνωστό από την πρώτη άσκηση). Η επίλυση γενικού συστήµατος n n χρειάζεται Ω = 2/3n 3 + O(n 2 ). Εποµένως, η κυρίαρχη πολυπλοκότητα στο ϐρόχο είναι οι s λύσεις µε το A, εποµένως O(sn 3 ). Επίσης Φ min = n 2 + 3ns Προσοχή: Το A µεταφέρεται µόνο µια ϕορά! 2. Παρατηρούµε ότι χρησιµοποιούµε το ίδιο µητρώο A κάθε ϕορά. Εποµένως µπορούµε να εφαρµόσουµε LU µόνο µια ϕορά εκτός του ϐρόχου και να χρησιµοποιήσουµε τα προκύπτοντα L, U στίς λύσεις, π.χ. [L, U] = lu(a); z i = z i + U\(L\x i ); Το κόστος εκτός ϐρόχου είναι 2/3n 3 +O(n 2 ) ενώ εντός ϐρόχου O(sn 2 ) εποµένως συνολικά έχουµε κυρίαρχο κόστος O(n 3 ) (υποθέτουµε ότι s n.) 3
Εστω τα s µητρώα A i R n n, i = 1,..., s, το µη µηδενικό διάνυσµα p και ο υπολογισµός (I είναι ταυτοτικό µητρώο) B = I; ; B = A i B; ; y = B p; 1. Ο αριθµός πράξεων α.κ.υ. (δηλ. το Ω στο γνωστό - από το ϐιβλίο - υπολογιστικό µοντέλο) είναι O(sn 3 ). Να ϐρείτε τον ακριβή τύπο για το Ω και να αναφέρετε την κατηγορία BLAS των παραπάνω πράξεων. 2. Να τροποποιήσετε τον παραπάνω κώδικα έτσι ώστε το συνολικό κόστος να είναι O(sn 2 ), να υπολογίσετε το ακριβές Ω. 1. Οπως το γράψαµε πρόκειται για s πολλαπλασιασµούς µητρώων (BLAS 3) και στη συνέχεια πολλαπλασιασµός του γινοµένου µητρώου µε το διάνυσµα p (BLAS 2). Το κόστος κάθε πολλαπλασιασµού µητρώων είναι n 2 (2n 1) εποµένως συνολικά ϑα έχουµε (s 1)n 2 (2n 1) ή sn 2 (2n 1) (το δεύτερο ισχύει αν δεν λάβουµε υπόψη ότι δεν χρειάζεται ο πρώτος πολλαπλασιασµός µε το ταυτοτικό, δηλ. το A 1 I). Ο πολλαπλασιασµός του γινοµένου µε το διάνυσµα προσθέτει n(2n 1) επιπλέον πράξεις. Εποµένως Ω = (s δ)n 2 (2n 1) + n(2n 1) = n(2n 1)((s δ)n + 1) όπου δ = 0 ή 1. 2. Καλύτερος τρόπος υπολογισµού είναι y = A s (A s 1 ( (A 1 p) ) δηλαδή µε τον κώδικα y = p; ; y = A i y; Εδώ Ω = sn(2n 1). 3ο ΘΕΜΑ Εστω η συνάρτηση u : R R που ικανοποιεί τη διαφορική εξίσωση d2 u dx 2(x) + (µ + 2)xu(x) = x2, για κάθε x [0, 1], µε συνοριακές συνθήκες u(0) = 1, u(1) = 0. 1. Να διακριτοποιήσετε το πρόβληµα χρησιµοποιώντας πλέγµα n = 4 ισαπεχόντων εσωτερικών σηµείων και κεντρισµένες πεπερασµένες διαφορές 2ης τάξης και να γράψετε το αλγεβρικό σύστηµα που προκύπτει ως Ab = c. Πρέπει να γράψετε ακριβώς τις αριθµητικές τιµές των στοιχείων των A, c. Θέτουµε h = 1/(n + 1) = 1/ και διακριτοποιούµε χρησιµοποιώντας πλέγµα µε κόµβους 0, 1/, 2/, 3/, 4/, 1, το διάνυσµα U = [U 1, U 2, U 3, U 4 ] όπου U j ϑα χρησιµοποιηθεί ως προσέγγιση του u(x j ). Χρησιµοποιούµε τους γνωστούς τύπους για την προσέγγιση των παραγώνγων, στην περίπτωσή µας u (x j ) U j+1 2U j + U j 1 h 2 4
και αντικαθιστούµε στη διαφορική χρησιµοποιώντας επίσης τις συνοριακές τιµές u(0) = 1, u(1) = 0. Αν π.χ. µ = 0, προκύπτει ένα τριδιαγώνιο σύστηµα 4 4 22 2 U 1 24 2 2 U 2 26 2 2 U 3 = 28 2 U 4 2. Ποιά είναι µια ελάχιστη συνθηκη που πρέπει να ικανοποιεί η άγνωστη συνάρτηση u για να επιτρέπει το σφάλµα διακριτοποίησης να είναι 2ης τάξης (ως προς την απόσταση των διαδοχικών σηµείων του πλέγµατος). Να είναι η 4η παράγωγος συνεχής (και άρα ϕραγµένη) στο κλειστό διάστηµα [0, 1]. Προκύπτει γιατί το σφάλµα διακριτοποίησης σε κάθε κόµβο του πλέγµατος είναι ανάλογο του h 2 u (IV ) (ˆx j ) για ˆx j κοντά στο x j. Εποµένως για διακριτοποίηση 2ης τάξης πρέπει να εξασφαλίζεται ότι η 4η παράγωγος είναι ϕραγµένη. 3. Αν χρησιµοποιούσαµε n κόµβους, τότε το κόστος επίλυσης του γραµµικού συστήµατος ϑα ήταν O(n κ ). Ποιό ϑα είναι το κ και γιατί; Επειδή το µητρώο είναι τριδιαγώνιο, το κόστος επίλυσης είναι O(n), δηλ. κ = 1. ΠΡΟΣΟΧΗ: Υπάρχουν εκδοχές των ερωτήσεων µε διαφορική εξίσωση του τύπου 626 2 4 2 9 2 16 2 d2 u dx2(x) + (µ + 4)du(x) + u(x) = 1, για κάθε x [0, 1], dx και ερωτάστε αν µπορούµε να χρησιµοποιήσουµε παραγοντοποίηση Cholesky για την ε- πίλυση. Η απάντηση είναι ότι όχι γιατί το (τριδιαγώνιο) µητρώο που προκύπτει δεν είναι συµµετρικό. 4. Για τη διαφορική εξίσωση (αρχικών τιµών) dv dt (t) = Bv(t) όπου B = [102 µ, 1; 1, 102 µ], v = [v 1 (t), v 2 (t)] να υπολογίσετε πόσα τουλάχιστον ϐήµατα «εµπρός Euler» πρέπει να εκτελεστούν για να υπολογιστεί η λύση στο t = 4 χωρίς να παρουσιάζεται αστάθεια. Στην εµπρός Euler V (j+1) V (j) = tbv (j) όπου V (j) είναι η προσέγγιση του v(t j ). Εποµένως και άρα V (j+1) V (j) = tbv (j) V (j+1) = (I + tb)v (j) άρα ϑέλουµε το t να επιλεγεί έτσι ώστε οι ιδιοτιµές του (I + tb) να είναι κατά µέγιστο 1. Εποµένως ϑέλουµε t τέτοιο ώστε t min 2 λ. Αν π.χ. j µ = 0 υπολογίζουµε τις ιδιοτιµές του B και τις ϐρίσκουµε λ = { 101, 103} εποµένως ϑέτουµε t = 2 103 εποµένως ϑα χρειαστούν τουλάχιστον 4 2 103 = 206 ϐήµατα.